home *** CD-ROM | disk | FTP | other *** search
/ ADA Programming Guide / ADA Programming Guide.iso / adatutor / adawkbk / text_io.ada < prev    next >
Text File  |  1996-01-30  |  10KB  |  268 lines

  1. with io_exceptions;
  2. package text_io is
  3.  
  4.     type file_type is limited private;
  5.  
  6.     type file_mode is (in_file, out_file);
  7.  
  8.     type count              is range 0 .. integer'last;
  9.     subtype positive_count  is count range 1 .. count'last;
  10.     unbounded: constant count := 0;    -- line and page length
  11.  
  12.     subtype field           is integer range 0 .. integer'last;
  13.     subtype number_base     is integer range 2 .. 16;
  14.  
  15.     type type_set is (lower_case, upper_case);
  16.  
  17.     -- file management
  18.  
  19.     procedure create(file:    in out file_type;
  20.                      mode:    in file_mode := out_file;
  21.                      name:    in string := "";
  22.                      form:    in string := "");
  23.  
  24.     procedure open  (file:    in out file_type;
  25.                      mode:    in file_mode;
  26.                      name:    in string;
  27.                      form:    in string := "");
  28.  
  29.     procedure close    (file:    in out file_type);
  30.     procedure delete   (file:    in out file_type);
  31.     procedure reset    (file:    in out file_type; mode:    in file_mode);
  32.     procedure reset    (file:    in out file_type);
  33.  
  34.     function mode    (file:    in file_type) return file_mode;
  35.     function name    (file:    in file_type) return string;
  36.     function form    (file:    in file_type) return string;
  37.  
  38.     function is_open (file:    in file_type) return boolean;
  39.  
  40.     -- control of default input and output files
  41.  
  42.     procedure set_input    (file:    in file_type);
  43.     procedure set_output   (file:    in file_type);
  44.  
  45.     function standard_input     return file_type;
  46.     function standard_output    return file_type;
  47.     function standard_error     return file_type;
  48.  
  49.     function current_input      return file_type;
  50.     function current_output     return file_type;
  51.  
  52.     -- specification of line and page lengths
  53.  
  54.     procedure set_line_length (file:    in file_type; to:    in count);
  55.     procedure set_line_length (to:    in count);
  56.  
  57.     procedure set_page_length (file:    in file_type; to:    in count);
  58.     procedure set_page_length (to:    in count);
  59.  
  60.     function line_length (file:    in file_type) return count;
  61.     function line_length return count;
  62.  
  63.     function page_length (file:    in file_type) return count;
  64.     function page_length return count;
  65.  
  66.     -- column, line, and page control
  67.  
  68.     procedure new_line  (file:       in file_type;
  69.                          spacing:    in positive_count := 1);
  70.     procedure new_line  (spacing:    in positive_count := 1);
  71.  
  72.     procedure skip_line (file:       in file_type;
  73.                          spacing:    in positive_count := 1);
  74.     procedure skip_line (spacing:    in positive_count := 1);
  75.  
  76.     function end_of_line (file:    in file_type) return boolean;
  77.     function end_of_line return boolean;
  78.  
  79.     procedure new_page   (file:    in file_type);
  80.     procedure new_page;
  81.  
  82.     procedure skip_page  (file:    in file_type);
  83.     procedure skip_page;
  84.  
  85.     function end_of_page (file:    in file_type) return boolean;
  86.     function end_of_page return boolean;
  87.  
  88.     function end_of_file (file:    in file_type) return boolean;
  89.     function end_of_file return boolean;
  90.  
  91.     procedure set_col    (file:    in file_type; to:    in positive_count);
  92.     procedure set_col    (to:      in positive_count);
  93.  
  94.     procedure set_line   (file:    in file_type; to:    in positive_count);
  95.     procedure set_line   (to:      in positive_count);
  96.  
  97.     function col         (file:    in file_type) return positive_count;
  98.     function col return positive_count;
  99.  
  100.     function line        (file:    in file_type) return positive_count;
  101.     function line return positive_count;
  102.  
  103.     function page        (file:    in file_type) return positive_count;
  104.     function page return positive_count;
  105.  
  106.     -- character input-output
  107.  
  108.     procedure get    (file:    in file_type; item:    out character);
  109.     procedure get    (item:    out character);
  110.     procedure put    (file:    in file_type; item:    in character);
  111.     procedure put    (item:    in character);
  112.  
  113.     -- string input-output
  114.  
  115.     procedure get    (file:    in file_type; item:    out string);
  116.     procedure get    (item:    out string);
  117.     procedure put    (file:    in file_type; item:    in string);
  118.     procedure put    (item:    in string);
  119.  
  120.     procedure get_line (file: in file_type;
  121.                         item: out string; last: out natural);
  122.     procedure get_line (item: out string; last: out natural);
  123.     procedure put_line (file: in file_type; item: in string);
  124.     procedure put_line (item: in string);
  125.  
  126.     -- generic package for input-output of integer types
  127.  
  128.     generic
  129.         type num is range <>;
  130.     package integer_io is
  131.         default_width:   field := num'width;
  132.         default_base:    number_base := 10;
  133.  
  134.  
  135.         procedure get   (file:    in file_type;
  136.                          item:    out num;
  137.                          width:   in field := 0);
  138.         procedure get   (item:    out num;    width: in field := 0);
  139.  
  140.         procedure put   (file:    in file_type;
  141.                          item:    in num;
  142.                          width:   in field := default_width;
  143.                          base:    in number_base := default_base);
  144.         procedure put   (item:    in num;
  145.                          width:   in field := default_width;
  146.                          base:    in number_base := default_base);
  147.  
  148.         procedure get   (from:    in string;
  149.                          item:    out num;
  150.                          last:    out positive);
  151.         procedure put   (to:      out string;
  152.                          item:    in num;
  153.                          base:    in number_base := default_base);
  154.  
  155.     end integer_io;
  156.  
  157.     -- generic package for input-output of real types
  158.  
  159.     generic
  160.         type num is digits <>;
  161.     package float_io is
  162.         default_fore:   field := 2;
  163.         default_aft:    field := num'digits - 1;
  164.         default_exp:    field := 3;
  165.  
  166.  
  167.         procedure get   (file:    in file_type;
  168.                          item:    out num;
  169.                          width:   in field := 0);
  170.         procedure get   (item:    out num;    width: in field := 0);
  171.  
  172.         procedure put   (file:    in file_type;
  173.                          item:    in num;
  174.                          fore:    in field := default_fore;
  175.                          aft:     in field := default_aft;
  176.                          exp:     in field := default_exp);
  177.         procedure put   (item:    in num;
  178.                          fore:    in field := default_fore;
  179.                          aft:     in field := default_aft;
  180.                          exp:     in field := default_exp);
  181.  
  182.         procedure get   (from:    in string;
  183.                          item:    out num;
  184.                          last:    out positive);
  185.         procedure put   (to:      out string;
  186.                          item:    in num;
  187.                          aft:     in field := default_aft;
  188.                          exp:     in field := default_exp);
  189.  
  190.     end float_io;
  191.  
  192.     generic
  193.         type num is delta <>;
  194.     package fixed_io is
  195.         default_fore:   field := num'fore;
  196.         default_aft:    field := num'aft;
  197.         default_exp:    field := 0;
  198.  
  199.  
  200.         procedure get   (file:    in file_type;
  201.                          item:    out num;
  202.                          width:   in field := 0);
  203.         procedure get   (item:    out num;    width: in field := 0);
  204.  
  205.         procedure put   (file:    in file_type;
  206.                          item:    in num;
  207.                          fore:    in field := default_fore;
  208.                          aft:     in field := default_aft;
  209.                          exp:     in field := default_exp);
  210.         procedure put   (item:    in num;
  211.                          fore:    in field := default_fore;
  212.                          aft:     in field := default_aft;
  213.                          exp:     in field := default_exp);
  214.  
  215.         procedure get   (from:    in string;
  216.                          item:    out num;
  217.                          last:    out positive);
  218.         procedure put   (to:      out string;
  219.                          item:    in num;
  220.                          aft:     in field := default_aft;
  221.                          exp:     in field := default_exp);
  222.  
  223.     end fixed_io;
  224.  
  225.     generic
  226.         type enum is (<>);
  227.     package enumeration_io is
  228.         default_width:      field := 0;
  229.         default_setting:    type_set := upper_case;
  230.  
  231.  
  232.         procedure get   (file:    in file_type; item:    out enum);
  233.         procedure get   (item:    out enum);
  234.  
  235.         procedure put   (file:    in file_type;
  236.                          item:    in enum;
  237.                          width:   in field := default_width;
  238.                          set:     in type_set := default_setting);
  239.         procedure put   (item:    in enum;
  240.                          width:   in field := default_width;
  241.                          set:     in type_set := default_setting);
  242.  
  243.         procedure get   (from:    in string;
  244.                          item:    out enum;
  245.                          last:    out positive);
  246.         procedure put   (to:      out string;
  247.                          item:    in enum;
  248.                          set:     in type_set := default_setting);
  249.  
  250.     end enumeration_io;
  251.  
  252.     -- exceptions
  253.  
  254.     status_error:  exception renames io_exceptions.status_error;
  255.     mode_error:    exception renames io_exceptions.mode_error;
  256.     name_error:    exception renames io_exceptions.name_error;
  257.     use_error:     exception renames io_exceptions.use_error;
  258.     device_error:  exception renames io_exceptions.device_error;
  259.     end_error:     exception renames io_exceptions.end_error;
  260.     data_error:    exception renames io_exceptions.data_error;
  261.     layout_error:  exception renames io_exceptions.layout_error;
  262.  
  263. private
  264.     type file_object;
  265.     type file_type is access file_object;
  266.     -- detail omitted
  267. end text_io;
  268.